package com.atguigu.guli.service.base.model;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;

@Data
//@Accessors 让set方法有返回值
@Accessors(chain = true)
public class BaseEntity {

    //@ApiModelProperty 是swagger的注解，它的作用是添加和操作属性模块的数据，下面是它内部的常用属性：
    //要注意的是他只是对swagger  对源代码没有然后影响
    // 属性：
    //value：字段说明，
    //name：重写属性名字，
    //dataType：重写属性类型，
    //required：是否必须，默认false，
    //example：举例，
    //hidden：隐藏。
    @ApiModelProperty(value = "ID")
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    private String id;

    //@TableField 和TableId是mybatis-plus中的注解
    //@TableId 是用来声明主键的（因为你要自动生成所以有声明那个是主键）
    //@TableField中的fill是用来自动填充的，创建时间和更新时间每张表都要写，所以避免代码的重复可以用这个注解（当然你还是要写这个到底是怎么实现的，或者说你要干什么）
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;
}
